package com.example.httplibrary.beans

import java.io.File

/**
 * @author 郑
 * @date 2025/8/4.
 * qq：331758871
 * phone：18979397268
 */
/**
 * 文件下载状态的密封类，用于表示文件下载过程中的各种状态
 *
 * 这个密封类定义了文件下载可能遇到的所有状态，包括空闲、加载中、进度、成功和错误状态。
 * 通过使用密封类，可以确保在处理下载状态时能够覆盖所有可能的情况，提高代码的安全性和可读性。
 */
sealed class FileDownloadState {
    /**
     * 空闲状态，表示文件下载尚未开始
     */
    object Idle : FileDownloadState()

    /**
     * 加载状态，表示文件下载正在进行中，但尚未获得具体进度
     */
    object Loading : FileDownloadState()

    /**
     * 进度状态，表示文件下载正在进行中，并包含当前下载进度
     *
     * @param percentage 下载进度百分比，取值范围为0-100
     */
    data class Progress(val percentage: Int) : FileDownloadState()

    /**
     * 成功状态，表示文件下载已完成且成功
     *
     * @param file 下载成功的文件对象
     */
    data class Success(val file: File) : FileDownloadState()

    /**
     * 错误状态，表示文件下载过程中发生了错误
     *
     * @param message 错误信息描述
     */
    data class Error(val message: String) : FileDownloadState()
}
